<?php
 
class MenuHelper extends Helper {
	var $helpers = array('Presentacion');

    function dibujar($items, $seleccionado="") {
		$retorno = "";

		foreach($items as $k=>$v) {
			if(isset($v['nombre']))
				$padres[] = "mostrarOcultarDiv('menu_padre_" . $v['nombre'] . "', 'true')";
		}
		$string_padres = implode(";", $padres) . ";";

		foreach($items as $k=>$v) {

			if($seleccionado != "" && isset($v['nombre'])) {
				if($seleccionado == $v['nombre'])
					$retorno.= "\n<div class='menu_item' id='menu_padre_" . $v['nombre'] . "'>";
				else
					$retorno.= "\n<div style='visibility:hidden;display:none;' class='menu_item' id='menu_padre_" . $v['nombre'] . "'>";
			}
			elseif(isset($v['nombre']))
				$retorno.= "\n<div class='menu_item' id='menu_padre_" . $v['nombre'] . "'>";


			$padres_sin_actual = false;
			foreach($items as $tmp_k=>$tmp_v) {
				if(isset($v['nombre']) && isset($tmp_v['nombre']) && $v['nombre'] <> $tmp_v['nombre']) {
					$padres_sin_actual[] = "mostrarOcultarDiv('menu_padre_" . $tmp_v['nombre'] . "')";
				}
			}

			$string_padres_sin_actual = "";
			if(!empty($padres_sin_actual)) {
				$string_padres_sin_actual = implode(";", $padres_sin_actual) . ";";
			}
			if(isset($v['nombre']))
				$string_padres_sin_actual .= "mostrarOcultarDiv('menu_hijo_" . $v['nombre'] . "');";

			if(isset($v['nombre'])) {
				$ayuda = $v['etiqueta'];
				if(!empty($v['ayuda'])) {
					$ayuda = $v['ayuda'];
				}
			
				if(isset($v['hijos'])) {
					$retorno.="\n".$this->Presentacion->enlaceHtml($this->Presentacion->image("menus/" . $v['imagen'], array("alt"=>$ayuda)) . "<br/>" . $v['etiqueta'],$v['enlace'], array("onclick"=>$string_padres_sin_actual . "intercambiaClase('menu_padre_" . $v['nombre'] . "', 'menu_presionado', 'menu_item');"));
				}
				else {
					$retorno.="\n".$this->Presentacion->enlaceHtml($this->Presentacion->image("menus/" . $v['imagen'], array("alt"=>$ayuda)) . "<br/>" . $v['etiqueta'],$v['enlace']);
				}
				$retorno.= "\n</div>\n\n";
			}

			if(isset($v['nombre']) && isset($v['hijos'])) {
				if($seleccionado != "") {
					if($seleccionado == $v['nombre'])
						$retorno.= "<div id='menu_hijo_" . $v['nombre'] . "'>";
					else
						$retorno.= "<div style='visibility:hidden;display:none;' id='menu_hijo_" . $v['nombre'] . "'>";
				}
				else
					$retorno.= "<div style='visibility:hidden;display:none;' id='menu_hijo_" . $v['nombre'] . "'>";

				foreach($v['hijos'] as $k1=>$v1) {
					$ayuda = $v1['etiqueta'];
					if(!empty($v1['ayuda'])) {
						$ayuda = $v1['ayuda'];
					}
					$retorno.= "\n<div class='menu_item'>";
					$retorno.="\n".$this->Presentacion->enlaceHtml($this->Presentacion->image("menus/" . $v1['imagen'], array("alt"=>$ayuda)) . "<br/>" . $v1['etiqueta'], $this->Presentacion->url($v1['enlace'], true));
					$retorno.= "\n</div>";
				}			

				//agrego el volver
				$retorno.= "<div class='menu_item'>";
				$retorno.="\n".$this->Presentacion->enlaceHtml($this->Presentacion->image("menus/volver.png", array("alt"=>"Volver")) . "<br/>" . "Volver","#", array("onclick"=>"mostrarOcultarDiv('menu_hijo_" . $v['nombre'] . "');mostrarOcultarDiv('menu_padre_" . $v['nombre'] . "');" . $string_padres . ";cambiarClase('menu_padre_" . $v['nombre'] . "', 'menu_item');"));
				$retorno.= "</div>";

				$retorno.= "</div>";
			}
		}
		return $retorno;
	}













/**
 * Recieves an array of menu items, each item consisting of 2 or 3 elements: 
 * Name for link; URL; Sub menu items (optional).
 * 
 * The output of this method is a div containing an unordered list which reflects 
 * the same structure as the input array. 
 * The second parameter is used to define the id of the output div.
 *
 * @param array $listItems
 * @param string $here
 * @param string $id
 * @return string Unordered html list.
 */
    function arrayToUl($listItems)
    {
        $return="\n<table summary=\"Contiene el menu\" cellpadding=\"0\" cellspacing=\"0\" id=\"menu_tabla\">";

        foreach ($listItems as $Item)
        {
            $return.=$this->_printMenu($Item);
        }

        $return.="\n</table>";

        return $return;
    }
 
/**
 * Internal method, called by arrayToUl. 
 * Allows the possibility to have unlimited levels of UL.
 *
 * @param array $menu
 * @param int $depth
 * @return string Unordered html list.
 */
    function _printMenu ($Menu,$depth=1)
    {
		$return="";
 
        if ($Menu[1])
        {
	        if (isset($Menu[2]) && !is_array($Menu[2]) && stristr($Menu[2],str_replace("/1","", $Menu[1])))
			{
				//$return.="\n<tr><td><p>".$Menu[0] ."</p></td></tr>";
				$return.="\n<tr><td><p>".$this->Presentacion->enlaceHtml($Menu[0],$Menu[1])."</p></td></tr>";
			}
			else
			{
				$return.="\n<tr><td>".$this->Presentacion->enlaceHtml($Menu[0] . $this->Presentacion->image("12x12/" . str_replace(" ", "_", strtolower($Menu[0])) . ".gif" ,array("alt" => ucfirst(strtolower($Menu[0])))), $Menu[1], array(), false, false) . "</td></tr>";
			}
        }
        else
        {
			//$return.="\n<tr><td>".$this->link($Menu[0],$Menu[1])."</td></tr>";
			$return.="\n<tr><th>".$Menu[0]."</th></tr>";
        }
 
        if (isset($Menu[2]) && is_array($Menu[2]))
		{
			foreach ($Menu[2] as $SubMenuItem)
			{
				$return.=$this->_printMenu($SubMenuItem,$depth+1);
			}
		}

        return $return;
    }
 
}
?>
